<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 22-11-2014 ; 28-02-2015
class Division extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las divisiones activas o inactivas pero NO las borradas(-1) segun los filtros aplicados
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todas las divisiones existentes del ciclo vigente. Si no hay ciclo vigente no se muestra nada.
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo las divisiones del ciclo en cuestion.
	//Lo mismo ocurre con el turno y el curso.
	//Ultima verificación: 22-09-2014
	function consultar($idCicloLectivo=null, $idTurno=null, $idCurso=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno y el curso
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($idCurso) && $idCurso>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno y curso.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0) && ($curso->num_rows() == 1 || $idCurso==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo de filtrado
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay seleccionar el ciclo vigente, en caso contrario el que haya sido pasado por la url
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del turno
					$datos['idTurnoSel'] = $idTurno;
					
					//Le paso a la vista el id del curso
					$datos['idCursoSel'] = $idCurso;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a los cursos segun el ciclo lectivo y turno seleccionados.
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////		
					$restriccion1 = "";
					$restriccion2 = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();				
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}
					
					if($idTurno!=0){
						$restriccion1 .= " AND curso.idTurno=".$idTurno;
					}
					
					if($idCurso!=0){
						$restriccion2 = " AND division.idCurso=".$idCurso;
					}
					
					//Busco todos los cursos activos, segun el ciclo lectivo y turno seleccionado en el combo
					$listadoCursos = $this->m_curso->buscarActivos($restriccion1);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las divisiones segun el ciclo lectivo, turno y curso seleccionados.
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					//Cargo el modelo donde estan los datos de las divisiones registradas para pedirle un listado con todos ellos
					$this->load->model('m_division');
					
					//Busco todas las divisiones, tanto activas como inactivas, menos las borradas(-1), segun las restricciones en ciclo, turno y curso
					$listadoDivisiones = $this->m_division->buscar($restriccion1 . $restriccion2);
					
					//Le paso el listado de todas las divisiones a la vista para que las muestre en una tabla
					$datos['divisiones'] = $listadoDivisiones;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de divisiones y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_divisiones', $datos, true);
					
					//Cargo la vista principal con los datos de la vista consultar divisiones
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar la division pasada por la url
	//El segundo, tercer y cuarto parametro indica si hay que filtrar las divisiones en el resultado
	function eliminar($idDivision=null, $idCicloLectivo=null, $idTurno=null, $idCurso=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idDivision pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para idTurno e idCurso.
			if(is_numeric($idDivision) && $idDivision>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($idCurso) && $idCurso>=0){
				//Cargo el modelo donde estan los datos de las divisiones registradas
				$this->load->model('m_division');
				
				//Busco a la division que hay que eliminar
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Cargo el modelo donde estan los datos de los cursos registrados
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Tercera comprobacion: Que la division sea existente. Ademas que el ciclo lectivo pasado por la url sea existente, o bien sea cero. Lo mismo para el turno y curso.
				if($division->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0) && ($curso->num_rows() == 1 || $idCurso==0)){
					//Elimino a la division pasada por la url
					$respuesta = $this->m_division->eliminar($idDivision, $this->session->userdata('idUsuarioLog'));
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo de filtrado
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay seleccionar el ciclo vigente, en caso contrario el que haya sido pasado por la url
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del turno
					$datos['idTurnoSel'] = $idTurno;
					
					//Le paso a la vista el id del curso
					$datos['idCursoSel'] = $idCurso;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a los cursos segun el ciclo lectivo y turno seleccionados.
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////		
					$restriccion1 = "";
					$restriccion2 = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();				
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
					}
					
					if($idTurno!=0){
						$restriccion1 .= " AND curso.idTurno=".$idTurno;
					}
					
					if($idCurso!=0){
						$restriccion2 = " AND division.idCurso=".$idCurso;
					}
					
					//Busco todos los cursos activos, segun el ciclo lectivo y turno seleccionado en el combo
					$listadoCursos = $this->m_curso->buscarActivos($restriccion1);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las divisiones segun el ciclo lectivo, turno y curso seleccionados.
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					//Cargo el modelo donde estan los datos de las divisiones registradas para pedirle un listado con todos ellos
					$this->load->model('m_division');
					
					//Busco todas las divisiones, tanto activas como inactivas, menos las borradas(-1), segun las restricciones en ciclo, turno y curso
					$listadoDivisiones = $this->m_division->buscar($restriccion1 . $restriccion2);
					
					//Le paso el listado de todas las divisiones a la vista para que los muestre en una tabla
					$datos['divisiones'] = $listadoDivisiones;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					//Cargo la vista donde se muestra la tabla de divisiones
					$this->load->view('v_divisiones', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Abre la pantalla con el formulario para crear una division nueva
	function abrirPantallaCrear($idCicloLectivo=null, $idTurno=null, $idCurso=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno y curso
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($idCurso) && $idCurso>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno y curso.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0) && ($curso->num_rows() == 1 || $idCurso==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del turno seleccinado
					$datos['idTurnoSel'] = $idTurno;
					
					//Le paso a la vista el id del curso seleccionado
					$datos['idCursoSel'] = $idCurso;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones sobre los cursos. Hay que llenar el combo de cursos segun el ciclo y turno seleccionados
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{						
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
															
					//Busco todos los cursos segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoCursos = $this->m_curso->buscarActivos($restriccion);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los espacios escolares registrados para pedirle un listado con todos ellos
					$this->load->model('m_espacio_escolar');
					
					//Busco todos los espacios escolares activos
					$listadoEspaciosEscolares = $this->m_espacio_escolar->buscarActivos();
					
					//Le paso el listado de todos los espacios escolares a la vista para que los muestre en un combo
					$datos['espaciosEscolares'] = $listadoEspaciosEscolares;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					//Cargo la vista donde se muestra el formulario para crear una division y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_divisiones_crear', $datos, true);
					
					//Cargo la vista principal con los datos de la vista para crear una division
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro seleccionado no existe
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea realmente la division. La respuesta se muestra en un iframe dentro del formulario
	function crear(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por post el curso, orden, nombre, espacio escolar y el estado de la division a crear.
			if(is_numeric($this->input->post('curso',true)) && $this->input->post('curso',true)>0 && 
			   is_numeric($this->input->post('orden',true)) && $this->input->post('orden',true)>0 && 
			   $this->input->post('nombre',true) != "" && is_numeric($this->input->post('espacioEscolar',true)) && $this->input->post('espacioEscolar',true)>=0 &&
			   ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso que hay que crearle una division
				$curso = $this->m_curso->get($this->input->post('curso',true));
				
				//Cargo el modelo donde estan los datos de los espacios escolares
				$this->load->model('m_espacio_escolar');
				
				//Busco al espacio escolar para comprobar que exista
				$espacioEscolar = $this->m_espacio_escolar->get($this->input->post('espacioEscolar',true));
				
				//Tercera comprobacion: Que el curso pasado por la url sea existente. Que el espacio escolar sea existente o el id igual a cero.
				if($curso->num_rows() == 1 && ($espacioEscolar->num_rows() == 1 || $this->input->post('espacioEscolar',true)==0)){
					//Cargo el modelo donde estan los datos de las divisiones
					$this->load->model('m_division');
					
					//Creamos la division
					$resultado = $this->m_division->crear($this->input->post('curso',true), $this->input->post('espacioEscolar',true), $this->input->post('orden',true), $this->input->post('nombre',true), $this->input->post('colorpicker1',true), $this->input->post('colorpicker2',true), $this->input->post('descripcion',true), $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
					
					if($resultado == 1){
						echo("<script> alert('La divisi\u00f3n: ".$this->input->post('nombre',true)." se ha creado correctamente.');</script>");
					}else{
						echo("<script> alert('La divisi\u00f3n: ".$this->input->post('nombre',true)." no se ha creado. Ha habido un error.');</script>");
					}
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos de la division pasada por la url
	function abrirPantallaModificar($idDivision=null, $idCicloLectivo=null, $idTurno=null, $idCurso=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idDivision pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno y curso.
			if(is_numeric($idDivision) && $idDivision>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($idCurso) && $idCurso>=0){
				//Cargo el modelo donde estan los datos de las divisiones registradas
				$this->load->model('m_division');
				
				//Busco a la division que hay que modificar
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Cargo el modelo donde estan los datos de los cursos registrados
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Tercera comprobacion: Que la division sea existente. Ademas que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno y curso.
				if($division->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0) && ($curso->num_rows() == 1 || $idCurso==0)){
					//Le paso la division a modificar a la vista
					$datos['divisionSel'] = $division;
					
					//Le paso el ciclo lectivo, turno y curso que estaban seleccionados en la pantalla consultar
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idTurnoSel'] = $idTurno;
					$datos['idCursoSel'] = $idCurso;
					
					//Busco a la division siguiente de la que hay que modificar
					$idDivisionSig = $this->m_division->getContiguo($idDivision,1, $idCicloLectivo, $idTurno, $idCurso);
					
					//Le paso la division siguiente de la que hay que modificar a la vista
					$datos['idDivisionSig'] = $idDivisionSig;
					
					//Busco a la division anterior de la que hay que modificar
					$idDivisionAnt = $this->m_division->getContiguo($idDivision,-1, $idCicloLectivo, $idTurno, $idCurso);
									
					//Le paso la division anterior del que hay que modificar a la vista
					$datos['idDivisionAnt'] = $idDivisionAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
															
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones sobre los cursos. Hay que llenar el combo de cursos segun el ciclo seleccionado
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($division->row()->idCicloLectivo!=0){
						$restriccion = " AND curso.idCicloLectivo=".$division->row()->idCicloLectivo;
					}
					
					//Busco todos los cursos segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoCursos = $this->m_curso->buscar($restriccion);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los espacios escolares registrados para pedirle un listado con todos ellos
					$this->load->model('m_espacio_escolar');
					
					//Busco todos los espacios escolares y no solo los activos
					$listadoEspaciosEscolares = $this->m_espacio_escolar->buscar();
					
					//Le paso el listado de todos los espacios escolares a la vista para que los muestre en un combo
					$datos['espaciosEscolares'] = $listadoEspaciosEscolares;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					
					//Cargo la vista donde se muestra el formulario para modificar una division y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_divisiones_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar una division
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de una division
	function modificar($idDivision=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por post el curso, orden, nombre y el estado de la division a modificar. 
			//Ademas que se haya pasado por la url el id de la division a modificar
			if(is_numeric($idDivision) && $idDivision>0 && is_numeric($this->input->post('curso',true)) && $this->input->post('curso',true)>0 && 
			   is_numeric($this->input->post('orden',true)) && $this->input->post('orden',true)>0 && 
			   $this->input->post('nombre',true) != "" && is_numeric($this->input->post('espacioEscolar',true)) && $this->input->post('espacioEscolar',true)>=0 && 
			   ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de las divisiones
				$this->load->model('m_division');
				
				//Busco a la division que hay que modificar
				$division = $this->m_division->get($idDivision);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que exista.
				$curso = $this->m_curso->get($this->input->post('curso',true));
				
				//Cargo el modelo donde estan los datos de los espacios escolares
				$this->load->model('m_espacio_escolar');
				
				//Busco al espacio escolar para comprobar que exista
				$espacioEscolar = $this->m_espacio_escolar->get($this->input->post('espacioEscolar',true));
				
				//Tercera comprobacion: Que la division pasada por la url sea existente. Que el curso tmb sea existente. Que el espacio escolar sea existente o el id sea igual a cero.
				if($division->num_rows() == 1 && $curso->num_rows() == 1 && ($espacioEscolar->num_rows() == 1 || $this->input->post('espacioEscolar',true)==0)){
					//Modificamos la division
					$resultado = $this->m_division->modificar($idDivision,$this->input->post('curso',true), $this->input->post('espacioEscolar',true), $this->input->post('orden',true), $this->input->post('nombre',true), $this->input->post('colorpicker1',true), $this->input->post('colorpicker2',true), $this->input->post('descripcion',true), $this->input->post('estado',true));
					
					if($resultado == 1){
						echo("<script> alert('La divisi\u00f3n: ".$this->input->post('nombre',true)." se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('La divisi\u00f3n: ".$this->input->post('nombre',true)." no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}				
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo SOLO se puede llamar con ajax
	//Este metodo se usa en el abm asignaturas para crear o modificar una asignatura. Se llama cuando se cambia la seleccion del curso y hay que actualizar las divisiones.
	function filtrar($estado=null, $idCurso=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idCurso sea numerico y mayor o igual que cero. Que estado sea igual a 1 o cero.
			if(is_numeric($idCurso) && $idCurso>=0 && is_numeric($estado) && ($estado==0 || $estado==1)){
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Tercera comprobacion: Que curso pasado por la url sea existente o bien el id sea igual a cero.
				if($curso->num_rows() == 1 || $idCurso==0){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////				
					$restriccion = " AND division.idCurso=".$idCurso;
					
					if($estado==1)	$restriccion .= " AND division.estado=".$estado;
					
					//Cargo el modelo donde estan los datos de las divisiones registradas para pedirle un listado con todas ellas segun las restricciones
					$this->load->model('m_division');
					
					//Busco todas divisiones activas del curso correspondiente
					$listadoDivisiones = $this->m_division->buscar($restriccion);
					
					//Le paso el listado de todas las divisiones a la vista para que los muestre en un combo
					$datos['divisiones'] = $listadoDivisiones;
					
					//Cargo la vista donde se arma el combo
					$this->load->view('v_divisiones_select',$datos);
				} else {
					//No se han pasado los parametros minimos necesarios.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();			
				}
			} else {
				//No se han pasado los parametros minimos necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();			
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra el horario de la division en el turno seleccionado.
	//Filtros (Los primeros tres parametros solo sirven para volver a la division correcta y el turno para visualizar el horario en ese turno unicamente)
	//Ultima verificación:
	function visualizarHorario($idCicloLectivo=null, $idCurso=null, $idDivision=null, $idTurno=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno y el curso. Que idDivision sea numerico y mayor que cero.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idDivision) && $idDivision>0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de las divisiones
				$this->load->model('m_division');
				
				//Busco a la division para comprobar que existe
				$division = $this->m_division->get($idDivision);
				
				//Tercera comprobacion: Que la division pasada por la url sea existente. Que el ciclo, curso y turno sea existente o bien el id sea igual a cero.
				if($division->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0) && ($curso->num_rows() == 1 || $idCurso==0)){
					//Le paso la division y el turno a visualizar a la vista para extrar datos de ellos.
					$datos['divisionSel'] = $division;
					$datos['turnoSel'] = $turno;
					
					//Le paso el id del ciclo, curso, turno y division seleccionados en la pantalla
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idCursoSel'] = $idCurso;
					$datos['idTurnoSel'] = $idTurno;
					$datos['idDivisionSel'] = $idDivision;
					
					//Busco todos los turnos tanto activos como inactivos, menos los borrados(-1)
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo.
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo el modelo donde estan los datos de los modulos registrados para pedirle un listado con todos ellos
					$this->load->model('m_modulo');
					
					//Cargo la vista donde se muestra los horarios de la division y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_divisiones_horarios', $datos, true);
					
					//Cargo la vista principal con los datos de la vista
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
}